/**
 * 版权所有(C)，上海勾芒信息科技，2016，所有权利保留。
 * 
 * 项目名：	car-web
 * 文件名：	HandlerRegistory.java
 * 模块说明：	
 * 修改历史：
 * 2016年11月16日 - Debenson - 创建。
 */
package com.alex.wechat.mp.extension;

import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import com.gomore.jeecg.common.Assert;
import com.google.common.collect.Lists;

/**
 * @author Debenson
 * @since 0.1
 */
public abstract class ExtensionRegistory {

  private static final List<Extension> extensions = Lists.newArrayList();

  public static void register(Extension bean) {
    Assert.assertArgumentNotNull(bean, "bean");

    extensions.add(bean);
    Collections.sort(extensions, new Comparator<Extension>() {

      @Override
      public int compare(Extension o1, Extension o2) {
        if (o1.priority() == o2.priority()) {
          return 0;
        } else if (o1.priority() > o2.priority()) {
          return -1;
        } else {
          return 1;
        }
      }

    });
  }

  public static List<Extension> getExtensions() {
    return Collections.unmodifiableList(extensions);
  }

}
